package com.ecoolex.hotel.saas.ws;

import java.util.List;

import com.ecoolex.framework.common.exception.BizException;
import com.ecoolex.framework.common.pojo.Page;
import com.ecoolex.framework.common.pojo.Pagination;
import com.ecoolex.hotel.saas.entity.PresaleCouponOrder;
import com.ecoolex.hotel.saas.entity.PresaleCouponOrderAfterSales;
import com.ecoolex.hotel.saas.entity.PresaleCouponOrderAfterSalesRecord;
import com.ecoolex.hotel.saas.entity.PresaleCouponOrderDetail;
import com.ecoolex.hotel.saas.entity.PresaleCouponOrderOperateRecord;
import com.ecoolex.hotel.saas.pojo.QueryPresaleCouponOrderAfterSalesDTO;
import com.ecoolex.hotel.saas.pojo.QueryPresaleCouponOrderDTO;
import com.ecoolex.hotel.saas.pojo.SubmitPresaleCouponOrderDTO;

public interface PresaleCouponOrderService {
	
	PresaleCouponOrder getForUser(Integer orderId, Integer userId);

	Pagination<PresaleCouponOrder> queryForUser(Integer storeId, Integer status,Integer userId,Page page); 
	
	PresaleCouponOrder submit(SubmitPresaleCouponOrderDTO submit, String createUser) throws BizException;

	PresaleCouponOrder applyOfflinePay(PresaleCouponOrder order, String updateUser) throws BizException;
	
	PresaleCouponOrder cancel(PresaleCouponOrder order, String updateUser) throws BizException;
	
	PresaleCouponOrder delete(PresaleCouponOrder order, String updateUser) throws BizException;
	
	PresaleCouponOrder get(Integer orderId);
	
	Pagination<PresaleCouponOrder> query(QueryPresaleCouponOrderDTO query, Page page);
	
	List<PresaleCouponOrderDetail> queryOrderDetail(Integer orderId);
	
	Boolean couponCodeVerify(Integer storeId, String couponCode, String updateUser) throws BizException;
	
	Boolean cancelVerify(PresaleCouponOrder order, String remark, String updateUser) throws BizException;

	PresaleCouponOrder confirmOfflinePay(PresaleCouponOrder order, String updateUser) throws BizException;
	
	PresaleCouponOrder refund(PresaleCouponOrder order, String updateUser) throws BizException;
	
	PresaleCouponOrder applyRefund(PresaleCouponOrder order, String remark, String evidenceImage, String updateUser) throws BizException;
	
	Boolean presaleCouponCanRefund(Integer orderId);
	
	PresaleCouponOrderAfterSales getAfterSales(Integer afterSalesId);
	
	Pagination<PresaleCouponOrderAfterSales> queryAfterSales(QueryPresaleCouponOrderAfterSalesDTO query, Page page);
	
	PresaleCouponOrderAfterSales agreeRefund(PresaleCouponOrderAfterSales afterSales, String updateUser) throws BizException;
	
	PresaleCouponOrderAfterSales refuseRefund(PresaleCouponOrderAfterSales afterSales, String updateUser) throws BizException;
	
	Pagination<PresaleCouponOrderAfterSales> queryAfterSalesForUser(Integer storeId, Integer userId, Page page);
	
	PresaleCouponOrderAfterSales cancelApply(PresaleCouponOrderAfterSales afterSales, String updateUser) throws BizException;
	
	PresaleCouponOrderAfterSales delete(PresaleCouponOrderAfterSales afterSales, String updateUser) throws BizException;
	
	List<PresaleCouponOrderAfterSalesRecord> afterSalesRecord(Integer afterSalesId);
	
	PresaleCouponOrderAfterSales getLastestByOrderId(Integer orderId);
	
	List<PresaleCouponOrderOperateRecord> operateRecordList(Integer orderId);
}
